package com.pxst.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

public class PageUtils {

    /**
     * 通过全部数据，获取当前页数据
     * @param page 当前页
     * @param pageSize 每页显示数量
     * @param list 总数据
     * @param <T> 列表数据类型
     * @return 当前页显示数据
     */
    public static <T> List<T> getPageRecords(int page, int pageSize, List<T> list) {
        if (list.size() <= pageSize){
            return list;
        }
        int startNum = (page - 1) * pageSize;
        int endNum = page * pageSize;
        List<T> records = list.subList(startNum, endNum);
        return records;
    }

    /**
     * 通过全部数据，获取分页对象
     * @param page 当前页
     * @param pageSize 每页显示数量
     * @param list 总数据
     * @param <T> 列表数据类型
     * @return 分页对象
     */
    public static <T> Page<T> getPage(int page, int pageSize, List<T> list) {
        Page<T> tPage = new Page<>();
        tPage.setCurrent(page);
        tPage.setSize(pageSize);
        tPage.setTotal(list.size());

        if (list.size() <= pageSize){
            tPage.setRecords(list);
            return tPage;
        }
        int startNum = (page - 1) * pageSize;
        int endNum = page * pageSize;
        List<T> records = list.subList(startNum, endNum);
        tPage.setRecords(records);
        return tPage;
    }

    /**
     * 组装分页对象数据
     * @param page 当前页
     * @param pageSize 每页显示数量
     * @param records 总数据
     * @param <T> 列表数据类型
     * @return 分页对象
     */
    public static <T> Page<T> AssembledPage(int page, int pageSize, int total, List<T> records) {
        Page<T> tPage = new Page<>();
        tPage.setCurrent(page);
        tPage.setSize(pageSize);
        tPage.setTotal(total);
        tPage.setRecords(records);
        return tPage;
    }
}
